# 作者: 赵若云
# 2025年02月19日22时15分24秒
# 3478783573@qq.com


def use_split_string():
    """
    完成字符串的切片，左闭右开
    :return:
    """

    num_str = "0123456789"

    # 截取从 2 ~ 5 位置 的字符串
    print(num_str[2:6])
    # 截取从 2 ~ 末尾的字符串
    print(num_str[2:])
    # 截取从 开始~ 5 位置 的字符串
    print(num_str[:6])
    # 截取完整的字符串
    print(num_str[:])
    # 从开始位置，每隔一个字符截取字符串
    print(num_str[::2])
    # 从索引 1 开始，每隔一个取一个
    print(num_str[1::2])
    # 截取从 2 ~ 末尾 - 1的字符串
    print(num_str[2:-1])
    # 截取字符串末尾两个字符
    print(num_str[-2:])
    # 字符串的逆序（面试题）
    print(num_str[::-1])


def use_zip():
    """
    使用zip组合下面两个元组，变为列表嵌套元组格式，与上课输出效果一致
    :return:
    """
    a = (1, 2, 3)
    b = ('a', 'b', 'c')
    print(list(zip(a, b)))


def use_enumerate():
    """
    使用enumerate把下面列表变为一个字典
    :return:
    """
    seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    seasons_dict = {vale: id for id, vale in enumerate(seasons)}
    print(seasons_dict)


def print_info(name, title="", gender=True):
    """
    练习缺省参数,理解原理，例子与上课一致
    :param name:
    :param title:
    :param gender:
    :return:
    """
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s%s 是 %s" % (title, name, gender_text))


def print_info2(num, *args, **kwargs):
    """
    练习多值参数，理解原理，例子与上课一致
    :return: 
    """
    print(num)
    print(args)  # args匹配掉所有的位置参数
    print(kwargs)  # kwargs匹配掉所有的keyword参数


use_split_string()

use_zip()

use_enumerate()

print_info('小明', '班长', False)
print_info('小明', gender=False)

print_info2(1, 2, 3, 4, 5, name="小明", age=18, gender=True)
